package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.TeachplanDTO;
import com.xuecheng.api.content.model.dto.TeachplanMediaDTO;
import com.xuecheng.api.content.model.vo.BindTeachplanMediaVO;
import com.xuecheng.api.content.model.vo.TeachplanVO;
import com.xuecheng.api.teaching.model.dto.TeachplanWorkDTO;
import com.xuecheng.api.teaching.model.vo.BindTeachplanWorkVO;
import com.xuecheng.common.domain.response.RestResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * <p></p>
 *
 * @Description:
 */
@Api(value = "课程计划api",tags = "课程计划api信息管理接口说明")
public interface TeachplanApi {

    @ApiOperation("查询课程计划树形结构")
    @ApiImplicitParam(value = "courseId",name = "课程基础Id值",required = true,dataType = "Long",paramType = "path")
    TeachplanDTO getTreeNodes(Long courseId);

    @ApiOperation("课程计划创建和修改")
    TeachplanDTO createOrModifyTeachplan(TeachplanVO vo);

    @ApiOperation(value = "删除课程计划")
    @ApiImplicitParam(name = "teachPlanId" ,
            value = "课程计划Id值",required = true,
            dataType = "Long", paramType = "path", example = "1")
    void removeTeachPlan(Long teachPlanId);


    @ApiOperation(value = "课程计划和媒资信息绑定")
    TeachplanMediaDTO associationMedia(BindTeachplanMediaVO mediaVO);



    @ApiOperation(value = "根据媒资信息查询课程计划和媒资关联关系数据")
    RestResponse<List<TeachplanMediaDTO>> getByMediaId4s(Long mediaId);


    @ApiOperation("课程计划绑定作业信息")
    @ApiImplicitParam(name = "teachplanWorkVO",value = "课程计划绑定作业信息VO" ,
            required = true, dataType = "BindTeachplanWorkVO",paramType = "body")
    TeachplanWorkDTO associateWork(BindTeachplanWorkVO teachplanWorkVO);
}
